/**
 * IttPackDao.java
 * Created at 2017-2-20
 * Created by shihui
 * Copyright (C) 2017 BROADTEXT SOFTWARE, All rights reserved.
 */
package com.broadtext.rms.monitor.dao;

import java.util.List;
import java.util.Map;

import com.broadtext.common.bean.EntityPageBean;
import com.broadtext.common.exp.DaoException;
import com.broadtext.rms.monitor.model.FenceGpsInfo;
import com.broadtext.rms.monitor.model.PackLocationInfo;
import com.broadtext.rms.monitor.model.PackRunTimeSpan;
import com.broadtext.rms.monitor.model.TtPackCurrent;
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;

/**
 * <p>ClassName: ITtPackDao</p>
 * <p>Description: 监控电池清单接口Dao</p>
 * <p>Author: shihui</p>
 * <p>Date: 2017-2-20</p>
 */
public interface ITtPackDao {

    /**
     * 
     * <p>Description: 查询电池监控数据</p>
     * @param map 查询条件
     * @param pageBounds 翻页
     * @return 结果
     * @throws DaoException 异常
     */
    @SuppressWarnings("rawtypes")
    EntityPageBean findPackMonitorData(Map<String, Object> map, PageBounds pageBounds) throws DaoException;

    /**
     * 
     * <p>Description: 根据条件获取当前监控电池实时信息</p>
     * @param sql sqlId
     * @param entity 实体
     * @return 结果集
     * @throws DaoException  异常
     */
    Map<String, Object> getMonitorDataInfoCurrent(String sql, TtPackCurrent entity) throws DaoException;

    /**
     * 
     * <p>Description: 获取对应电池下包含的模块号</p>
     * @param paramsMap 查询参数
     * @return 结果集
     * @throws DaoException 异常
     */
    List<String> getNoNums(String sql, Map<String, Object> paramsMap) throws DaoException;

    /**
     * 
     * <p>Description: 检查电池报废状态</p>
     * @param ids 主键集
     * @return 检查结果
     * @throws DaoException 异常
     */
    Object checkFailureStatus(String[] ids) throws DaoException;

    /**
     * 
     * <p>Description: 报废</p>
     * @param ids 主键数组
     * @param currentUser 当前用户
     * @return 结果集
     * @throws DaoException 
     */
    void setFailure(String[] ids, String currentUser) throws DaoException;

    /**
     * 
     * <p>Description: 检查无效状态</p>
     * @param ids 主键数组
     * @return 结果集
     * @throws DaoException 异常
     */
    Object checkEnableStatus(String[] ids) throws DaoException;

    /**
     * 
     * <p>Description: 查询历史报警列表</p>
     * @param map 查询条件
     * @param pageBounds 分页
     * @return 结果集
     * @throws DaoException 异常
     */
    EntityPageBean<Object> findHistoryWarningList(Map<String, Object> map, PageBounds pageBounds) throws DaoException;

    /**
     * 
     * <p>Description: 分页查询 监控电池历史数据</p>
     * @param map 查询条件
     * @param pageBounds 分页
     * @return 结果
     * @throws DaoException 
     */
    EntityPageBean<Object> findMonitorHistoryDataList(Map<String, Object> map, PageBounds pageBounds) throws DaoException;

    /**
     * 
     * <p>Description: 根据查询条件获取电池历史数据详情</p>
     * @param sql 查询sqlid
     * @param queryMap 查询条件
     * @return 结果集
     * @throws DaoException 异常
     */
    Map<String, Object> findPackHistoryDataDetail(String sql, Map<String, Object> queryMap) throws DaoException;

    /**
     * 
     * <p>Description: 历史轨迹列表分页查询</p>
     * @param sql 查询sql
     * @param map 查询调价
     * @param pageBounds  分页条件
     * @return 结果集
     * @throws DaoException 异常
     */
    EntityPageBean<PackLocationInfo> findHistoryLocationListByPage(String sql, Map<String, Object> map, PageBounds pageBounds) throws DaoException;

    /**
     * 
     * <p>Description: 查询当前累计运行时间状态list</p>
     * @param sql sqlid
     * @param entity 查询条件
     * @return 结果集
     * @throws DaoException 异常
     */
    List<PackRunTimeSpan> getCurrentRuntimeSpanList(String sql, TtPackCurrent entity) throws DaoException;

    /**
     * 
     * <p>Description: 根据电池id 终端id获取监控电池实时对象</p>
     * @param queryMap 查询条件
     * @return 结果集
     * @throws DaoException 异常
     */
    TtPackCurrent getTtPackCurrentById(Map<String, Object> queryMap) throws DaoException;

    /**
     * 
     * <p>Description: 统计是否存在告警信息</p>
     * @param queryMap 查询条件
     * @return 结果集
     * @throws DaoException 异常
     */
    String countAlertInfo(Map<String, Object> queryMap) throws DaoException;

    /**
     * 
     * <p>Description: 检查掉电状态</p>
     * @param params 查询条件
     * @return 结果
     * @throws DaoException 异常
     */
    Object checkPowerFailStatus(Map<String, Object> params) throws DaoException;

    /**
     * 
     * <p>Description: 检查离线文件是否已经上传过</p>
     * @param fileNameLists 离线文件名list
     * @return 结果
     * @throws DaoException 异常
     */
    Object checkOfflineFileExist(List<String> fileNameLists) throws DaoException;

    /**
     * 删除旧数据
     * @param dataList 参数
     * @throws DaoException 异常
     */
	void deleteFenceInfo(List<FenceGpsInfo> dataList) throws DaoException;

}
